package top.milkbox.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.milkbox.domain.Notice;
import top.milkbox.info.R;
import top.milkbox.service.NoticeService;

import java.util.List;

/**
 * 公告
 * 如果是需要管理员权限的请求，需要在后面添加.admin
 */
@RestController
@RequestMapping("/notices")
public class NoticeController {

    @Autowired
    private NoticeService noticeService;


    /**
     * 获取所有公告，按照时间排序
     */
    @GetMapping("/getAll")
    public R getAll() {
        return new R(true, noticeService.getAll(), "获取成功");
    }

    /**
     * 立即更新公告缓存
     * 拦截器：LoginInterceptor && AdminInterceptor
     */
    @GetMapping("/updateRedis.admin")
    public R updateRedis() {
        noticeService.updateRedis();
        return new R(true, null, "公告缓存更新成功");
    }

    /**
     * 插入一条新的公告
     * 拦截器：LoginInterceptor && AdminInterceptor
     *
     * @param notice 公告对象，只需要传递标题和内容
     */
    @PostMapping("/add.admin")
    public R add(@RequestBody Notice notice) {
        R r = new R();
        r.setFlag(noticeService.add(notice));
        if (r.isFlag()) {
            r.setMessage("插入成功");
        } else {
            r.setMessage("插入失败");
        }
        return r;
    }

}
